package com.charmzenus.champion.base;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.charmzenus.champion.ui.view.LoadingPage;
import com.charmzenus.champion.utils.ViewUtil;
import com.umeng.analytics.MobclickAgent;

public abstract class BaseFragment extends Fragment {

    private LoadingPage loadingPage;
    // 这个view，要在请求成功之后，才会创建出来
    protected View mView = null;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        if (loadingPage == null) {  // 之前的frameLayout 已经记录了一个爹了  爹是之前的ViewPager
            loadingPage = new LoadingPage(getActivity()) {
                @Override
                public View createSuccessView() {
                    mView = BaseFragment.this.createSuccessView();
                    initView();
                    initListener();
                    return mView;
                }
                @Override
                protected void load() {
                    BaseFragment.this.load();
                }
            };
        } else {
            ViewUtil.removeParent(loadingPage);// 移除frameLayout之前的爹
        }
        return loadingPage;  //  拿到当前viewPager 添加这个framelayout
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initBeforeActivityCreated();
        show();
    }



    /**
     * 创建成功的界面
     *
     * @return 成功界面
     */
    public abstract View createSuccessView();

    /**
     * 请求网络数据
     */
    protected abstract void load();

    /**
     * 初始化成功界面组件
     */
    protected abstract void initView();

    /**
     * 初始化监听事件
     */
    protected void initListener() {
    }

    /**
     * 在Activity创建后， 在show方法执行前
     */
    protected void initBeforeActivityCreated() {}


    /**
     * 显示正在加载的界面
     */
    public void show() {
        if (loadingPage == null) return;
        loadingPage.show();
    }

    /**
     * 显示加载成功界面
     */
    public void showPageSuccess() {
        if (loadingPage == null) return;
        loadingPage.showPage(LoadingPage.LoadResult.success);
    }

    /**
     * 显示加载失败界面
     */
    public void showPageError() {
        if (loadingPage == null) return;
        loadingPage.showPage(LoadingPage.LoadResult.error);
    }

    /**
     * 显示加载数据为空的界面
     */
    public void showPageEmpty() {
        if (loadingPage == null) return;
        loadingPage.showPage(LoadingPage.LoadResult.empty);
    }

    public void onResume() {
        super.onResume();
        MobclickAgent.onResume(getContext());
        MobclickAgent.onPageStart(this.getClass().getSimpleName());
    }
    public void onPause() {
        super.onPause();
        MobclickAgent.onPause(getContext());
        MobclickAgent.onPageEnd(this.getClass().getSimpleName());
    }

}

